// import com.alibaba.druid.sql.ast.SQLName*;
// import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
// import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition*;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
#pragma once
#include "../../../../../sql/dialect/mysql/ast/MySqlObjectImpl.h"
#include "../../../../../sql/ast/statement/SQLAlterTableItem.h"

class SQLColumnDefinition;
class SQLName;
class MySqlASTVisitor;
class SQLColumnDefinition;

class MySqlAlterTableModifyColumn : public MySqlObjectImpl, virtual public SQLAlterTableItem
{
public:
  SQLColumnDefinition_ptr newColumnDefinition;

  BOOL_ptr first;

  SQLName_ptr firstColumn;
  SQLName_ptr afterColumn;

  SHAREDOBJECT(MySqlAlterTableModifyColumn);
  // @Override
  void accept0(MySqlASTVisitor_ptr visitor);

  SQLName_ptr getFirstColumn();

  void setFirstColumn(SQLName_ptr firstColumn);

  SQLName_ptr getAfterColumn();

  void setAfterColumn(SQLName_ptr afterColumn);

  SQLColumnDefinition_ptr getNewColumnDefinition();

  void setNewColumnDefinition(SQLColumnDefinition_ptr newColumnDefinition);

  BOOL_ptr isFirst();

  void setFirst(BOOL_ptr first);
};
